// generated by "go run gen.go". DO NOT EDIT.

package ccitt

// Each decodeTable is represented by an array of [2]int16's: a binary tree.
// Each array element (other than element 0, which means invalid) is a branch
// node in that tree. The root node is always element 1 (the second element).
//
// To walk the tree, look at the next bit in the bit stream, using it to select
// the first or second element of the [2]int16. If that int16 is 0, we have an
// invalid code. If it is positive, go to that branch node. If it is negative,
// then we have a leaf node, whose value is the bitwise complement (the ^
// operator) of that int16.
//
// Comments above each decodeTable also show the same structure visually. The
// "b123" lines show the 123'rd branch node. The "=XXXXX" lines show an invalid
// code. The "=v1234" lines show a leaf node with value 1234. When reading the
// bit stream, a 0 or 1 bit means to go up or down, as you move left to right.
//
// For example, in modeDecodeTable, branch node b005 is three steps up from the
// root node, meaning that we have already seen "000". If the next bit is "0"
// then we move to branch node b006. Otherwise, the next bit is "1", and we
// move to the leaf node v0000 (also known as the modePass constant). Indeed,
// the bits that encode modePass are "0001".
//
// Tables 1, 2 and 3 come from the "ITU-T Recommendation T.6: FACSIMILE CODING
// SCHEMES AND CODING CONTROL FUNCTIONS FOR GROUP 4 FACSIMILE APPARATUS"
// specification:
//
// https://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-T.6-198811-I!!PDF-E&type=items

// modeDecodeTable represents Table 1 and the End-of-Line code.
//
//                    +=XXXXX
// b009             +-+
//                  | +=v0009
// b007           +-+
//                | | +=v0008
// b010           | +-+
//                |   +=v0005
// b006         +-+
//              | | +=v0007
// b008         | +-+
//              |   +=v0004
// b005       +-+
//            | +=v0000
// b003     +-+
//          | +=v0001
// b002   +-+
//        | | +=v0006
// b004   | +-+
//        |   +=v0003
// b001 +-+
//        +=v0002
var modeDecodeTable = [...][2]int16{
	0:  {0, 0},
	1:  {2, ^2},
	2:  {3, 4},
	3:  {5, ^1},
	4:  {^6, ^3},
	5:  {6, ^0},
	6:  {7, 8},
	7:  {9, 10},
	8:  {^7, ^4},
	9:  {0, ^9},
	10: {^8, ^5},
}

// whiteDecodeTable represents Tables 2 and 3 for a white run.
//
//                      +=XXXXX
// b059               +-+
//                    | |     +=v1792
// b096               | |   +-+
//                    | |   | | +=v1984
// b100               | |   | +-+
//                    | |   |   +=v2048
// b094               | | +-+
//                    | | | |   +=v2112
// b101               | | | | +-+
//                    | | | | | +=v2176
// b097               | | | +-+
//                    | | |   | +=v2240
// b102               | | |   +-+
//                    | | |     +=v2304
// b085               | +-+
//                    |   |   +=v1856
// b098               |   | +-+
//                    |   | | +=v1920
// b095               |   +-+
//                    |     |   +=v2368
// b103               |     | +-+
//                    |     | | +=v2432
// b099               |     +-+
//                    |       | +=v2496
// b104               |       +-+
//                    |         +=v2560
// b040             +-+
//                  | | +=v0029
// b060             | +-+
//                  |   +=v0030
// b026           +-+
//                | |   +=v0045
// b061           | | +-+
//                | | | +=v0046
// b041           | +-+
//                |   +=v0022
// b016         +-+
//              | |   +=v0023
// b042         | | +-+
//              | | | | +=v0047
// b062         | | | +-+
//              | | |   +=v0048
// b027         | +-+
//              |   +=v0013
// b008       +-+
//            | |     +=v0020
// b043       | |   +-+
//            | |   | | +=v0033
// b063       | |   | +-+
//            | |   |   +=v0034
// b028       | | +-+
//            | | | |   +=v0035
// b064       | | | | +-+
//            | | | | | +=v0036
// b044       | | | +-+
//            | | |   | +=v0037
// b065       | | |   +-+
//            | | |     +=v0038
// b017       | +-+
//            |   |   +=v0019
// b045       |   | +-+
//            |   | | | +=v0031
// b066       |   | | +-+
//            |   | |   +=v0032
// b029       |   +-+
//            |     +=v0001
// b004     +-+
//          | |     +=v0012
// b030     | |   +-+
//          | |   | |   +=v0053
// b067     | |   | | +-+
//          | |   | | | +=v0054
// b046     | |   | +-+
//          | |   |   +=v0026
// b018     | | +-+
//          | | | |     +=v0039
// b068     | | | |   +-+
//          | | | |   | +=v0040
// b047     | | | | +-+
//          | | | | | | +=v0041
// b069     | | | | | +-+
//          | | | | |   +=v0042
// b031     | | | +-+
//          | | |   |   +=v0043
// b070     | | |   | +-+
//          | | |   | | +=v0044
// b048     | | |   +-+
//          | | |     +=v0021
// b009     | +-+
//          |   |     +=v0028
// b049     |   |   +-+
//          |   |   | | +=v0061
// b071     |   |   | +-+
//          |   |   |   +=v0062
// b032     |   | +-+
//          |   | | |   +=v0063
// b072     |   | | | +-+
//          |   | | | | +=v0000
// b050     |   | | +-+
//          |   | |   | +=v0320
// b073     |   | |   +-+
//          |   | |     +=v0384
// b019     |   +-+
//          |     +=v0010
// b002   +-+
//        | |     +=v0011
// b020   | |   +-+
//        | |   | |   +=v0027
// b051   | |   | | +-+
//        | |   | | | | +=v0059
// b074   | |   | | | +-+
//        | |   | | |   +=v0060
// b033   | |   | +-+
//        | |   |   |     +=v1472
// b086   | |   |   |   +-+
//        | |   |   |   | +=v1536
// b075   | |   |   | +-+
//        | |   |   | | | +=v1600
// b087   | |   |   | | +-+
//        | |   |   | |   +=v1728
// b052   | |   |   +-+
//        | |   |     +=v0018
// b010   | | +-+
//        | | | |     +=v0024
// b053   | | | |   +-+
//        | | | |   | | +=v0049
// b076   | | | |   | +-+
//        | | | |   |   +=v0050
// b034   | | | | +-+
//        | | | | | |   +=v0051
// b077   | | | | | | +-+
//        | | | | | | | +=v0052
// b054   | | | | | +-+
//        | | | | |   +=v0025
// b021   | | | +-+
//        | | |   |     +=v0055
// b078   | | |   |   +-+
//        | | |   |   | +=v0056
// b055   | | |   | +-+
//        | | |   | | | +=v0057
// b079   | | |   | | +-+
//        | | |   | |   +=v0058
// b035   | | |   +-+
//        | | |     +=v0192
// b005   | +-+
//        |   |     +=v1664
// b036   |   |   +-+
//        |   |   | |   +=v0448
// b080   |   |   | | +-+
//        |   |   | | | +=v0512
// b056   |   |   | +-+
//        |   |   |   |   +=v0704
// b088   |   |   |   | +-+
//        |   |   |   | | +=v0768
// b081   |   |   |   +-+
//        |   |   |     +=v0640
// b022   |   | +-+
//        |   | | |     +=v0576
// b082   |   | | |   +-+
//        |   | | |   | | +=v0832
// b089   |   | | |   | +-+
//        |   | | |   |   +=v0896
// b057   |   | | | +-+
//        |   | | | | |   +=v0960
// b090   |   | | | | | +-+
//        |   | | | | | | +=v1024
// b083   |   | | | | +-+
//        |   | | | |   | +=v1088
// b091   |   | | | |   +-+
//        |   | | | |     +=v1152
// b037   |   | | +-+
//        |   | |   |     +=v1216
// b092   |   | |   |   +-+
//        |   | |   |   | +=v1280
// b084   |   | |   | +-+
//        |   | |   | | | +=v1344
// b093   |   | |   | | +-+
//        |   | |   | |   +=v1408
// b058   |   | |   +-+
//        |   | |     +=v0256
// b011   |   +-+
//        |     +=v0002
// b001 +-+
//        |     +=v0003
// b012   |   +-+
//        |   | | +=v0128
// b023   |   | +-+
//        |   |   +=v0008
// b006   | +-+
//        | | |   +=v0009
// b024   | | | +-+
//        | | | | | +=v0016
// b038   | | | | +-+
//        | | | |   +=v0017
// b013   | | +-+
//        | |   +=v0004
// b003   +-+
//          |   +=v0005
// b014     | +-+
//          | | |   +=v0014
// b039     | | | +-+
//          | | | | +=v0015
// b025     | | +-+
//          | |   +=v0064
// b007     +-+
//            | +=v0006
// b015       +-+
//              +=v0007
var whiteDecodeTable = [...][2]int16{
	0:   {0, 0},
	1:   {2, 3},
	2:   {4, 5},
	3:   {6, 7},
	4:   {8, 9},
	5:   {10, 11},
	6:   {12, 13},
	7:   {14, 15},
	8:   {16, 17},
	9:   {18, 19},
	10:  {20, 21},
	11:  {22, ^2},
	12:  {^3, 23},
	13:  {24, ^4},
	14:  {^5, 25},
	15:  {^6, ^7},
	16:  {26, 27},
	17:  {28, 29},
	18:  {30, 31},
	19:  {32, ^10},
	20:  {^11, 33},
	21:  {34, 35},
	22:  {36, 37},
	23:  {^128, ^8},
	24:  {^9, 38},
	25:  {39, ^64},
	26:  {40, 41},
	27:  {42, ^13},
	28:  {43, 44},
	29:  {45, ^1},
	30:  {^12, 46},
	31:  {47, 48},
	32:  {49, 50},
	33:  {51, 52},
	34:  {53, 54},
	35:  {55, ^192},
	36:  {^1664, 56},
	37:  {57, 58},
	38:  {^16, ^17},
	39:  {^14, ^15},
	40:  {59, 60},
	41:  {61, ^22},
	42:  {^23, 62},
	43:  {^20, 63},
	44:  {64, 65},
	45:  {^19, 66},
	46:  {67, ^26},
	47:  {68, 69},
	48:  {70, ^21},
	49:  {^28, 71},
	50:  {72, 73},
	51:  {^27, 74},
	52:  {75, ^18},
	53:  {^24, 76},
	54:  {77, ^25},
	55:  {78, 79},
	56:  {80, 81},
	57:  {82, 83},
	58:  {84, ^256},
	59:  {0, 85},
	60:  {^29, ^30},
	61:  {^45, ^46},
	62:  {^47, ^48},
	63:  {^33, ^34},
	64:  {^35, ^36},
	65:  {^37, ^38},
	66:  {^31, ^32},
	67:  {^53, ^54},
	68:  {^39, ^40},
	69:  {^41, ^42},
	70:  {^43, ^44},
	71:  {^61, ^62},
	72:  {^63, ^0},
	73:  {^320, ^384},
	74:  {^59, ^60},
	75:  {86, 87},
	76:  {^49, ^50},
	77:  {^51, ^52},
	78:  {^55, ^56},
	79:  {^57, ^58},
	80:  {^448, ^512},
	81:  {88, ^640},
	82:  {^576, 89},
	83:  {90, 91},
	84:  {92, 93},
	85:  {94, 95},
	86:  {^1472, ^1536},
	87:  {^1600, ^1728},
	88:  {^704, ^768},
	89:  {^832, ^896},
	90:  {^960, ^1024},
	91:  {^1088, ^1152},
	92:  {^1216, ^1280},
	93:  {^1344, ^1408},
	94:  {96, 97},
	95:  {98, 99},
	96:  {^1792, 100},
	97:  {101, 102},
	98:  {^1856, ^1920},
	99:  {103, 104},
	100: {^1984, ^2048},
	101: {^2112, ^2176},
	102: {^2240, ^2304},
	103: {^2368, ^2432},
	104: {^2496, ^2560},
}

// blackDecodeTable represents Tables 2 and 3 for a black run.
//
//                      +=XXXXX
// b017               +-+
//                    | |     +=v1792
// b042               | |   +-+
//                    | |   | | +=v1984
// b063               | |   | +-+
//                    | |   |   +=v2048
// b029               | | +-+
//                    | | | |   +=v2112
// b064               | | | | +-+
//                    | | | | | +=v2176
// b043               | | | +-+
//                    | | |   | +=v2240
// b065               | | |   +-+
//                    | | |     +=v2304
// b022               | +-+
//                    |   |   +=v1856
// b044               |   | +-+
//                    |   | | +=v1920
// b030               |   +-+
//                    |     |   +=v2368
// b066               |     | +-+
//                    |     | | +=v2432
// b045               |     +-+
//                    |       | +=v2496
// b067               |       +-+
//                    |         +=v2560
// b013             +-+
//                  | |     +=v0018
// b031             | |   +-+
//                  | |   | |   +=v0052
// b068             | |   | | +-+
//                  | |   | | | | +=v0640
// b095             | |   | | | +-+
//                  | |   | | |   +=v0704
// b046             | |   | +-+
//                  | |   |   |   +=v0768
// b096             | |   |   | +-+
//                  | |   |   | | +=v0832
// b069             | |   |   +-+
//                  | |   |     +=v0055
// b023             | | +-+
//                  | | | |     +=v0056
// b070             | | | |   +-+
//                  | | | |   | | +=v1280
// b097             | | | |   | +-+
//                  | | | |   |   +=v1344
// b047             | | | | +-+
//                  | | | | | |   +=v1408
// b098             | | | | | | +-+
//                  | | | | | | | +=v1472
// b071             | | | | | +-+
//                  | | | | |   +=v0059
// b032             | | | +-+
//                  | | |   |   +=v0060
// b072             | | |   | +-+
//                  | | |   | | | +=v1536
// b099             | | |   | | +-+
//                  | | |   | |   +=v1600
// b048             | | |   +-+
//                  | | |     +=v0024
// b018             | +-+
//                  |   |     +=v0025
// b049             |   |   +-+
//                  |   |   | |   +=v1664
// b100             |   |   | | +-+
//                  |   |   | | | +=v1728
// b073             |   |   | +-+
//                  |   |   |   +=v0320
// b033             |   | +-+
//                  |   | | |   +=v0384
// b074             |   | | | +-+
//                  |   | | | | +=v0448
// b050             |   | | +-+
//                  |   | |   |   +=v0512
// b101             |   | |   | +-+
//                  |   | |   | | +=v0576
// b075             |   | |   +-+
//                  |   | |     +=v0053
// b024             |   +-+
//                  |     |     +=v0054
// b076             |     |   +-+
//                  |     |   | | +=v0896
// b102             |     |   | +-+
//                  |     |   |   +=v0960
// b051             |     | +-+
//                  |     | | |   +=v1024
// b103             |     | | | +-+
//                  |     | | | | +=v1088
// b077             |     | | +-+
//                  |     | |   | +=v1152
// b104             |     | |   +-+
//                  |     | |     +=v1216
// b034             |     +-+
//                  |       +=v0064
// b010           +-+
//                | |   +=v0013
// b019           | | +-+
//                | | | |     +=v0023
// b052           | | | |   +-+
//                | | | |   | | +=v0050
// b078           | | | |   | +-+
//                | | | |   |   +=v0051
// b035           | | | | +-+
//                | | | | | |   +=v0044
// b079           | | | | | | +-+
//                | | | | | | | +=v0045
// b053           | | | | | +-+
//                | | | | |   | +=v0046
// b080           | | | | |   +-+
//                | | | | |     +=v0047
// b025           | | | +-+
//                | | |   |     +=v0057
// b081           | | |   |   +-+
//                | | |   |   | +=v0058
// b054           | | |   | +-+
//                | | |   | | | +=v0061
// b082           | | |   | | +-+
//                | | |   | |   +=v0256
// b036           | | |   +-+
//                | | |     +=v0016
// b014           | +-+
//                |   |     +=v0017
// b037           |   |   +-+
//                |   |   | |   +=v0048
// b083           |   |   | | +-+
//                |   |   | | | +=v0049
// b055           |   |   | +-+
//                |   |   |   | +=v0062
// b084           |   |   |   +-+
//                |   |   |     +=v0063
// b026           |   | +-+
//                |   | | |     +=v0030
// b085           |   | | |   +-+
//                |   | | |   | +=v0031
// b056           |   | | | +-+
//                |   | | | | | +=v0032
// b086           |   | | | | +-+
//                |   | | | |   +=v0033
// b038           |   | | +-+
//                |   | |   |   +=v0040
// b087           |   | |   | +-+
//                |   | |   | | +=v0041
// b057           |   | |   +-+
//                |   | |     +=v0022
// b020           |   +-+
//                |     +=v0014
// b008         +-+
//              | |   +=v0010
// b015         | | +-+
//              | | | +=v0011
// b011         | +-+
//              |   |     +=v0015
// b027         |   |   +-+
//              |   |   | |     +=v0128
// b088         |   |   | |   +-+
//              |   |   | |   | +=v0192
// b058         |   |   | | +-+
//              |   |   | | | | +=v0026
// b089         |   |   | | | +-+
//              |   |   | | |   +=v0027
// b039         |   |   | +-+
//              |   |   |   |   +=v0028
// b090         |   |   |   | +-+
//              |   |   |   | | +=v0029
// b059         |   |   |   +-+
//              |   |   |     +=v0019
// b021         |   | +-+
//              |   | | |     +=v0020
// b060         |   | | |   +-+
//              |   | | |   | | +=v0034
// b091         |   | | |   | +-+
//              |   | | |   |   +=v0035
// b040         |   | | | +-+
//              |   | | | | |   +=v0036
// b092         |   | | | | | +-+
//              |   | | | | | | +=v0037
// b061         |   | | | | +-+
//              |   | | | |   | +=v0038
// b093         |   | | | |   +-+
//              |   | | | |     +=v0039
// b028         |   | | +-+
//              |   | |   |   +=v0021
// b062         |   | |   | +-+
//              |   | |   | | | +=v0042
// b094         |   | |   | | +-+
//              |   | |   | |   +=v0043
// b041         |   | |   +-+
//              |   | |     +=v0000
// b016         |   +-+
//              |     +=v0012
// b006       +-+
//            | |   +=v0009
// b012       | | +-+
//            | | | +=v0008
// b009       | +-+
//            |   +=v0007
// b004     +-+
//          | | +=v0006
// b007     | +-+
//          |   +=v0005
// b002   +-+
//        | | +=v0001
// b005   | +-+
//        |   +=v0004
// b001 +-+
//        | +=v0003
// b003   +-+
//          +=v0002
var blackDecodeTable = [...][2]int16{
	0:   {0, 0},
	1:   {2, 3},
	2:   {4, 5},
	3:   {^3, ^2},
	4:   {6, 7},
	5:   {^1, ^4},
	6:   {8, 9},
	7:   {^6, ^5},
	8:   {10, 11},
	9:   {12, ^7},
	10:  {13, 14},
	11:  {15, 16},
	12:  {^9, ^8},
	13:  {17, 18},
	14:  {19, 20},
	15:  {^10, ^11},
	16:  {21, ^12},
	17:  {0, 22},
	18:  {23, 24},
	19:  {^13, 25},
	20:  {26, ^14},
	21:  {27, 28},
	22:  {29, 30},
	23:  {31, 32},
	24:  {33, 34},
	25:  {35, 36},
	26:  {37, 38},
	27:  {^15, 39},
	28:  {40, 41},
	29:  {42, 43},
	30:  {44, 45},
	31:  {^18, 46},
	32:  {47, 48},
	33:  {49, 50},
	34:  {51, ^64},
	35:  {52, 53},
	36:  {54, ^16},
	37:  {^17, 55},
	38:  {56, 57},
	39:  {58, 59},
	40:  {60, 61},
	41:  {62, ^0},
	42:  {^1792, 63},
	43:  {64, 65},
	44:  {^1856, ^1920},
	45:  {66, 67},
	46:  {68, 69},
	47:  {70, 71},
	48:  {72, ^24},
	49:  {^25, 73},
	50:  {74, 75},
	51:  {76, 77},
	52:  {^23, 78},
	53:  {79, 80},
	54:  {81, 82},
	55:  {83, 84},
	56:  {85, 86},
	57:  {87, ^22},
	58:  {88, 89},
	59:  {90, ^19},
	60:  {^20, 91},
	61:  {92, 93},
	62:  {^21, 94},
	63:  {^1984, ^2048},
	64:  {^2112, ^2176},
	65:  {^2240, ^2304},
	66:  {^2368, ^2432},
	67:  {^2496, ^2560},
	68:  {^52, 95},
	69:  {96, ^55},
	70:  {^56, 97},
	71:  {98, ^59},
	72:  {^60, 99},
	73:  {100, ^320},
	74:  {^384, ^448},
	75:  {101, ^53},
	76:  {^54, 102},
	77:  {103, 104},
	78:  {^50, ^51},
	79:  {^44, ^45},
	80:  {^46, ^47},
	81:  {^57, ^58},
	82:  {^61, ^256},
	83:  {^48, ^49},
	84:  {^62, ^63},
	85:  {^30, ^31},
	86:  {^32, ^33},
	87:  {^40, ^41},
	88:  {^128, ^192},
	89:  {^26, ^27},
	90:  {^28, ^29},
	91:  {^34, ^35},
	92:  {^36, ^37},
	93:  {^38, ^39},
	94:  {^42, ^43},
	95:  {^640, ^704},
	96:  {^768, ^832},
	97:  {^1280, ^1344},
	98:  {^1408, ^1472},
	99:  {^1536, ^1600},
	100: {^1664, ^1728},
	101: {^512, ^576},
	102: {^896, ^960},
	103: {^1024, ^1088},
	104: {^1152, ^1216},
}

const maxCodeLength = 13

// Each encodeTable is represented by an array of bitStrings.

// bitString is a pair of uint32 values representing a bit code.
// The nBits low bits of bits make up the actual bit code.
// Eg. bitString{0x0004, 8} represents the bitcode "00000100".
type bitString struct {
	bits  uint32
	nBits uint32
}

// modeEncodeTable represents Table 1 and the End-of-Line code.
var modeEncodeTable = [...]bitString{
	0: {0x0001, 4}, // "0001"
	1: {0x0001, 3}, // "001"
	2: {0x0001, 1}, // "1"
	3: {0x0003, 3}, // "011"
	4: {0x0003, 6}, // "000011"
	5: {0x0003, 7}, // "0000011"
	6: {0x0002, 3}, // "010"
	7: {0x0002, 6}, // "000010"
	8: {0x0002, 7}, // "0000010"
	9: {0x0001, 7}, // "0000001"
}

// whiteEncodeTable2 represents Table 2 for a white run.
var whiteEncodeTable2 = [...]bitString{
	0:  {0x0035, 8}, // "00110101"
	1:  {0x0007, 6}, // "000111"
	2:  {0x0007, 4}, // "0111"
	3:  {0x0008, 4}, // "1000"
	4:  {0x000b, 4}, // "1011"
	5:  {0x000c, 4}, // "1100"
	6:  {0x000e, 4}, // "1110"
	7:  {0x000f, 4}, // "1111"
	8:  {0x0013, 5}, // "10011"
	9:  {0x0014, 5}, // "10100"
	10: {0x0007, 5}, // "00111"
	11: {0x0008, 5}, // "01000"
	12: {0x0008, 6}, // "001000"
	13: {0x0003, 6}, // "000011"
	14: {0x0034, 6}, // "110100"
	15: {0x0035, 6}, // "110101"
	16: {0x002a, 6}, // "101010"
	17: {0x002b, 6}, // "101011"
	18: {0x0027, 7}, // "0100111"
	19: {0x000c, 7}, // "0001100"
	20: {0x0008, 7}, // "0001000"
	21: {0x0017, 7}, // "0010111"
	22: {0x0003, 7}, // "0000011"
	23: {0x0004, 7}, // "0000100"
	24: {0x0028, 7}, // "0101000"
	25: {0x002b, 7}, // "0101011"
	26: {0x0013, 7}, // "0010011"
	27: {0x0024, 7}, // "0100100"
	28: {0x0018, 7}, // "0011000"
	29: {0x0002, 8}, // "00000010"
	30: {0x0003, 8}, // "00000011"
	31: {0x001a, 8}, // "00011010"
	32: {0x001b, 8}, // "00011011"
	33: {0x0012, 8}, // "00010010"
	34: {0x0013, 8}, // "00010011"
	35: {0x0014, 8}, // "00010100"
	36: {0x0015, 8}, // "00010101"
	37: {0x0016, 8}, // "00010110"
	38: {0x0017, 8}, // "00010111"
	39: {0x0028, 8}, // "00101000"
	40: {0x0029, 8}, // "00101001"
	41: {0x002a, 8}, // "00101010"
	42: {0x002b, 8}, // "00101011"
	43: {0x002c, 8}, // "00101100"
	44: {0x002d, 8}, // "00101101"
	45: {0x0004, 8}, // "00000100"
	46: {0x0005, 8}, // "00000101"
	47: {0x000a, 8}, // "00001010"
	48: {0x000b, 8}, // "00001011"
	49: {0x0052, 8}, // "01010010"
	50: {0x0053, 8}, // "01010011"
	51: {0x0054, 8}, // "01010100"
	52: {0x0055, 8}, // "01010101"
	53: {0x0024, 8}, // "00100100"
	54: {0x0025, 8}, // "00100101"
	55: {0x0058, 8}, // "01011000"
	56: {0x0059, 8}, // "01011001"
	57: {0x005a, 8}, // "01011010"
	58: {0x005b, 8}, // "01011011"
	59: {0x004a, 8}, // "01001010"
	60: {0x004b, 8}, // "01001011"
	61: {0x0032, 8}, // "00110010"
	62: {0x0033, 8}, // "00110011"
	63: {0x0034, 8}, // "00110100"
}

// whiteEncodeTable3 represents Table 3 for a white run.
var whiteEncodeTable3 = [...]bitString{
	0:  {0x001b, 5},  // "11011"
	1:  {0x0012, 5},  // "10010"
	2:  {0x0017, 6},  // "010111"
	3:  {0x0037, 7},  // "0110111"
	4:  {0x0036, 8},  // "00110110"
	5:  {0x0037, 8},  // "00110111"
	6:  {0x0064, 8},  // "01100100"
	7:  {0x0065, 8},  // "01100101"
	8:  {0x0068, 8},  // "01101000"
	9:  {0x0067, 8},  // "01100111"
	10: {0x00cc, 9},  // "011001100"
	11: {0x00cd, 9},  // "011001101"
	12: {0x00d2, 9},  // "011010010"
	13: {0x00d3, 9},  // "011010011"
	14: {0x00d4, 9},  // "011010100"
	15: {0x00d5, 9},  // "011010101"
	16: {0x00d6, 9},  // "011010110"
	17: {0x00d7, 9},  // "011010111"
	18: {0x00d8, 9},  // "011011000"
	19: {0x00d9, 9},  // "011011001"
	20: {0x00da, 9},  // "011011010"
	21: {0x00db, 9},  // "011011011"
	22: {0x0098, 9},  // "010011000"
	23: {0x0099, 9},  // "010011001"
	24: {0x009a, 9},  // "010011010"
	25: {0x0018, 6},  // "011000"
	26: {0x009b, 9},  // "010011011"
	27: {0x0008, 11}, // "00000001000"
	28: {0x000c, 11}, // "00000001100"
	29: {0x000d, 11}, // "00000001101"
	30: {0x0012, 12}, // "000000010010"
	31: {0x0013, 12}, // "000000010011"
	32: {0x0014, 12}, // "000000010100"
	33: {0x0015, 12}, // "000000010101"
	34: {0x0016, 12}, // "000000010110"
	35: {0x0017, 12}, // "000000010111"
	36: {0x001c, 12}, // "000000011100"
	37: {0x001d, 12}, // "000000011101"
	38: {0x001e, 12}, // "000000011110"
	39: {0x001f, 12}, // "000000011111"
}

// blackEncodeTable2 represents Table 2 for a black run.
var blackEncodeTable2 = [...]bitString{
	0:  {0x0037, 10}, // "0000110111"
	1:  {0x0002, 3},  // "010"
	2:  {0x0003, 2},  // "11"
	3:  {0x0002, 2},  // "10"
	4:  {0x0003, 3},  // "011"
	5:  {0x0003, 4},  // "0011"
	6:  {0x0002, 4},  // "0010"
	7:  {0x0003, 5},  // "00011"
	8:  {0x0005, 6},  // "000101"
	9:  {0x0004, 6},  // "000100"
	10: {0x0004, 7},  // "0000100"
	11: {0x0005, 7},  // "0000101"
	12: {0x0007, 7},  // "0000111"
	13: {0x0004, 8},  // "00000100"
	14: {0x0007, 8},  // "00000111"
	15: {0x0018, 9},  // "000011000"
	16: {0x0017, 10}, // "0000010111"
	17: {0x0018, 10}, // "0000011000"
	18: {0x0008, 10}, // "0000001000"
	19: {0x0067, 11}, // "00001100111"
	20: {0x0068, 11}, // "00001101000"
	21: {0x006c, 11}, // "00001101100"
	22: {0x0037, 11}, // "00000110111"
	23: {0x0028, 11}, // "00000101000"
	24: {0x0017, 11}, // "00000010111"
	25: {0x0018, 11}, // "00000011000"
	26: {0x00ca, 12}, // "000011001010"
	27: {0x00cb, 12}, // "000011001011"
	28: {0x00cc, 12}, // "000011001100"
	29: {0x00cd, 12}, // "000011001101"
	30: {0x0068, 12}, // "000001101000"
	31: {0x0069, 12}, // "000001101001"
	32: {0x006a, 12}, // "000001101010"
	33: {0x006b, 12}, // "000001101011"
	34: {0x00d2, 12}, // "000011010010"
	35: {0x00d3, 12}, // "000011010011"
	36: {0x00d4, 12}, // "000011010100"
	37: {0x00d5, 12}, // "000011010101"
	38: {0x00d6, 12}, // "000011010110"
	39: {0x00d7, 12}, // "000011010111"
	40: {0x006c, 12}, // "000001101100"
	41: {0x006d, 12}, // "000001101101"
	42: {0x00da, 12}, // "000011011010"
	43: {0x00db, 12}, // "000011011011"
	44: {0x0054, 12}, // "000001010100"
	45: {0x0055, 12}, // "000001010101"
	46: {0x0056, 12}, // "000001010110"
	47: {0x0057, 12}, // "000001010111"
	48: {0x0064, 12}, // "000001100100"
	49: {0x0065, 12}, // "000001100101"
	50: {0x0052, 12}, // "000001010010"
	51: {0x0053, 12}, // "000001010011"
	52: {0x0024, 12}, // "000000100100"
	53: {0x0037, 12}, // "000000110111"
	54: {0x0038, 12}, // "000000111000"
	55: {0x0027, 12}, // "000000100111"
	56: {0x0028, 12}, // "000000101000"
	57: {0x0058, 12}, // "000001011000"
	58: {0x0059, 12}, // "000001011001"
	59: {0x002b, 12}, // "000000101011"
	60: {0x002c, 12}, // "000000101100"
	61: {0x005a, 12}, // "000001011010"
	62: {0x0066, 12}, // "000001100110"
	63: {0x0067, 12}, // "000001100111"
}

// blackEncodeTable3 represents Table 3 for a black run.
var blackEncodeTable3 = [...]bitString{
	0:  {0x000f, 10}, // "0000001111"
	1:  {0x00c8, 12}, // "000011001000"
	2:  {0x00c9, 12}, // "000011001001"
	3:  {0x005b, 12}, // "000001011011"
	4:  {0x0033, 12}, // "000000110011"
	5:  {0x0034, 12}, // "000000110100"
	6:  {0x0035, 12}, // "000000110101"
	7:  {0x006c, 13}, // "0000001101100"
	8:  {0x006d, 13}, // "0000001101101"
	9:  {0x004a, 13}, // "0000001001010"
	10: {0x004b, 13}, // "0000001001011"
	11: {0x004c, 13}, // "0000001001100"
	12: {0x004d, 13}, // "0000001001101"
	13: {0x0072, 13}, // "0000001110010"
	14: {0x0073, 13}, // "0000001110011"
	15: {0x0074, 13}, // "0000001110100"
	16: {0x0075, 13}, // "0000001110101"
	17: {0x0076, 13}, // "0000001110110"
	18: {0x0077, 13}, // "0000001110111"
	19: {0x0052, 13}, // "0000001010010"
	20: {0x0053, 13}, // "0000001010011"
	21: {0x0054, 13}, // "0000001010100"
	22: {0x0055, 13}, // "0000001010101"
	23: {0x005a, 13}, // "0000001011010"
	24: {0x005b, 13}, // "0000001011011"
	25: {0x0064, 13}, // "0000001100100"
	26: {0x0065, 13}, // "0000001100101"
	27: {0x0008, 11}, // "00000001000"
	28: {0x000c, 11}, // "00000001100"
	29: {0x000d, 11}, // "00000001101"
	30: {0x0012, 12}, // "000000010010"
	31: {0x0013, 12}, // "000000010011"
	32: {0x0014, 12}, // "000000010100"
	33: {0x0015, 12}, // "000000010101"
	34: {0x0016, 12}, // "000000010110"
	35: {0x0017, 12}, // "000000010111"
	36: {0x001c, 12}, // "000000011100"
	37: {0x001d, 12}, // "000000011101"
	38: {0x001e, 12}, // "000000011110"
	39: {0x001f, 12}, // "000000011111"
}

// COPY PASTE table.go BEGIN

const (
	modePass = iota // Pass
	modeH           // Horizontal
	modeV0          // Vertical-0
	modeVR1         // Vertical-Right-1
	modeVR2         // Vertical-Right-2
	modeVR3         // Vertical-Right-3
	modeVL1         // Vertical-Left-1
	modeVL2         // Vertical-Left-2
	modeVL3         // Vertical-Left-3
	modeExt         // Extension
)

// COPY PASTE table.go END
